﻿using System;
using System.Collections.Generic;
using System.Web.UI;
using System.Linq;
using System.Web.UI.WebControls;
using PortalCurriculo.Domain;
using PortalCurriculo.WebUI.Helpers;

namespace PortalCurriculo.WebUI.UserControls.Endereco
{
    public partial class Cidade : UserControl
    {
        public string ValidationGroup { get; set; }
        public bool ValidarCidade = true;
        public bool ValidarUnidadeFederativa = true;
        public bool ValidarPais = true;

        public DropDownList DropDownCidade { get { return ddlCidade; } }
        public DropDownList DropDownUnidadeFederativa { get { return ddlUnidadeFederativa; } }
        public DropDownList DropDownPais { get { return ddlPais; } }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack) return;

            PreencherTela();

            RequiredFieldValidatorCidade.Visible = ValidarCidade;
            RequiredFieldValidatorEstado.Visible = ValidarUnidadeFederativa;
            RequiredFieldValidatorPais.Visible = ValidarPais;

            if (ValidationGroup == null) return;
            RequiredFieldValidatorCidade.ValidationGroup = ValidationGroup;
            RequiredFieldValidatorEstado.ValidationGroup = ValidationGroup;
            ValidationSummary.ValidationGroup = ValidationGroup;
        }

        private void PreencherTela()
        {
            PreencherPais();
        }

        private void PreencherPais()
        {
            WebHelper.FillDropDownList(ddlPais, new Pai().SelectAllActive<Pai>().OrderBy(pai => pai.Descricao), false);
            PreencherUnidadeFederativas();
        }

        private void PreencherUnidadeFederativas()
        {
            WebHelper.FillDropDownList(ddlUnidadeFederativa, new UnidadeFederativa { IdPais = int.Parse(ddlPais.SelectedValue) }.Listar(), true);
            PreencherCidades();
        }

        private void PreencherCidades()
        {
            if (ddlUnidadeFederativa.SelectedIndex == 0)
            {
                WebHelper.FillDropDownList(ddlCidade, null, true);
                return;
            }

            WebHelper.FillDropDownList(ddlCidade, new Domain.Cidade { IdUnidadeFederativa = int.Parse(ddlUnidadeFederativa.SelectedValue) }.Listar(), true);
        }

        protected void ddlPais_SelectedIndexChanged(object sender, EventArgs e)
        {
            PreencherUnidadeFederativas();
        }

        protected void ddlUnidadeFederativa_SelectedIndexChanged(object sender, EventArgs e)
        {
            PreencherCidades();
        }
    }
}